Skip to content
0

Git - 介绍与安装

NOTE

Git 是非常强大的版本管理工具,开发人员必须掌握的一门技术。

2022-02-08 @Young Kbt

Git 概述

Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。

Git 易于学习,占地面积小,性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。

何为版本控制

版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。

版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。

为什么需要版本控制

协同修改

  • 多人并行不悖的修改服务器端的同一个文件

数据备份

  • 不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态

版本管理

  • 在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率。这方面 SVN 采用的是增量式管理的方式,而 Git 采取了文件系统快照的方式

权限控制

  • 对团队中参与开发的人员进行权限控制

  • 对团队外开发者贡献的代码进行审核,这是 Git 独有

历史记录

  • 查看修改人、修改时间、修改内容、日志信息

  • 将本地文件恢复到某一个历史状态

分支管理

  • 允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率

版本控制工具

集中式版本控制工具

CVS、SVN、VSS ......

集中化的版本控制系统诸如 CVS、SVN 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。

这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。

事分两面,有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。

image-20220208125734133

分布式版本控制工具

Git、Mercurial、Bazaar、Darcs ......

像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。

分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:

  1. 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
  2. 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)

image-20220208125829779

Git 简介

Git 简史

image-20220208130020319

Git 优势

  • 大部分操作在本地完成,不需要联网

  • 完整性保证

  • 尽可能添加数据而不是删除或修改数据

  • 分支操作非常快捷流畅

  • 与 Linux 命令全面兼

Git 结构

image-20220208130247932

Git 本地结构分为:

  • 工作区,即我们写的代码文件
  • 暂存区,通过 git add 指令将代码文件添加到暂存区
  • 本地库,通过 git commit 指令将暂存区的代码文件添加到本地库
  • 远程库,通过 git push 指令将本地库的代码文件上传到远程库,即备份到云端

代码托管中心

代码托管中心的任务:维护远程库。

局域网环境下

  • GitLab 服务器

外网环境下

  • GitHub(国外)

  • Gitee 码云(国内)

Git 下载与安装

官网地址:https://git-scm.com/

官网下载地址:https://git-scm.com/download

这里演示 Windows 的安装步骤:

  1. 安装到一个没有中文,没有空格的目录下,不建议放在 C 盘

image-20220208130928257

  1. 默认值

image-20220208145148295

  1. 建议选择 Vim 编辑器,也就是 Linux 使用的编辑器

image-20220208130959086

  1. 默认分支名设置,选择让 Git 决定,分支名默认为 master,下一步

image-20220208145248934

  1. 建议不修改 PATH 环境变量,否则一些环境变量无法使用

image-20220208131059556

  1. 使用默认值,即 OpenSSL 库,限制性低

image-20220208145323669

  1. 选择第一个默认值

image-20220208131214486

  1. 选择 Git 提供的终端,不要合并到 CMD 终端,否则 Git 的一些命令会覆盖 CMD 的命令

image-20220208131241675

  1. 选择 Git pull 合并的模式,选择默认,然后下一步

image-20220208145445582

  1. 选择 Git 的凭据管理器,选择默认的跨平台的凭据管理器,然后下一步

image-20220208145524574

  1. 其他配置,选择默认设置,然后下一步

image-20220208145551318

  1. 实验室功能,技术还不成熟,有已知的 bug,不要勾选,然后点击右下角的 Install 按钮,开始安装 Git

image-20220208145610518

自此,安装成功。

Git 安装验证

在 Git Bash 终端里输入 git --version 查看 git 版本,如图所示,说明 Git 安装成功。

image-20220208145644845

本地库和远程库

团队内部协作

image-20220208131534620

当第一个本地库 push 到远程库时,第二个本地库就可以 clone 到自己,当修改了一些内容后,第二个本地库先加入团队,然后重新 push 到远程库,然后第一个本地库就可以 pull 更新自己。

跨团队协作

image-20220208131713222

当第一个本地库和第二个本地库需要第三个本地库的帮忙,那么可以让第三个本地库 fork 到自己的远程库,然后 clone 到自己,修改好代码后重新 push 到自己的远程库,接着 pull request 给第一个远程库,此时并不是立即合并,而是由第一个本地库进行审核无误,再合并,最后第一个本地库和第二个本地库通过 pull 更新自己。

最近更新